package com.yhally.seata.account.controller;

import com.yhally.seata.common.domain.CommonResult;
import org.springframework.web.bind.annotation.ControllerAdvice;
import org.springframework.web.bind.annotation.ExceptionHandler;
import org.springframework.web.bind.annotation.ResponseBody;

/**
 * 这里测试 在全局异常下 seata的回滚失败问题。经过测试在A B C三个服务中，C服务中出错 如果抛出的异常被捕获那么 seata不会进行回滚
 * 解决方法：手动回滚
 *         让所有分布式事务的请求接口不被AOP拦截（可以直接将远程调用接口单独抽出一个模块，再在ControllerAdvice指定basePackages的值，只拦截正常的）
 *
 *
 * 测试时直接打开下面的注解
 * @author wangyu
 * @version 1.0
 * @date 2022/5/4 22:56
 */
@ControllerAdvice
public class GlobalException {

    @ResponseBody
    @ExceptionHandler(RuntimeException.class)
    public CommonResult runtimeException(RuntimeException e){
        e.printStackTrace();
        return new CommonResult(500, "扣减账户余额失败2");
    }
}
